package com.fdb.efp.nls.service.impl;

import com.fdb.basic.framework.core.base.FrameworkService;
import com.fdb.basic.framework.core.util.StringUtil;
import com.fdb.efp.nls.service.dao.ColltResRecordTempDao;
import com.fdb.efp.nls.service.domain.ColltResRecord;
import com.fdb.efp.nls.service.facade.ColltResRecordTempService;
import com.fdb.efp.nls.service.vo.ColltResRecordVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 *需求编号：【】（业务提的需求编号）
 *问题编号：【】（若不是因为修复问题而新增该类，则留空）
 *开发人员：【wanglihua】
 *创建日期：【2019-09-2019/9/9 19:14】
 *功能描述：
 */
@Service("colltResRecordTempService")
public class ColltResRecordTempServiceImpl implements ColltResRecordTempService, FrameworkService {

    private static Logger logger = LoggerFactory.getLogger(ColltResRecordServiceImpl.class);

    @Autowired
    private ColltResRecordTempDao colltResRecordTempDao;

    /**
     * 经确认后，删除不需要的信息
     *
     * 0.1:wanglihua:2019/9/10 8:58: TODO: <br>
     * @author wanglihua
     * @params  * @param null
     * @return
     * @since 2019/9/10 8:58
     * @date 2019/9/10 8:58
     * @version 0.1
     */
    @Override
    public int batchDeleteByPk(ColltResRecordVO inColltResRecordVo) {
        logger.debug("当前删除数据条件为:"+ inColltResRecordVo);
        int num = 0;
        try {
            List<String> recordSernoList = null;
            if (Objects.nonNull(inColltResRecordVo) && !StringUtil.isNullorBank(inColltResRecordVo.getRecordSerno())) {
                recordSernoList = Arrays.asList(inColltResRecordVo.getRecordSerno().split(","));
            }
            num = colltResRecordTempDao.batchDeleteByPk(recordSernoList);
        } catch (Exception e) {
            logger.error("删除数据发生异常!", e);
            num = -1;
        }
        logger.debug("根据条件:"+ inColltResRecordVo +"删除的数据条数为"+ num);
        return num;
    }

    /**
     * 查询所有数据
     *
     * 0.1:wanglihua:2019/9/10 8:59: TODO: <br>
     * @author wanglihua
     * @params  * @param null
     * @return
     * @since 2019/9/10 8:59
     * @date 2019/9/10 8:59
     * @version 0.1
     */
    @Override
    public List<ColltResRecordVO> queryAllOwnerTempInfos(ColltResRecordVO colltResRecordVO) {
        logger.debug("当前查询本人所属数据信息的参数信息为:"+ colltResRecordVO);
        List<ColltResRecordVO> list = null;
        try {
            List<ColltResRecord> colltResRecords = colltResRecordTempDao.queryAllOwnerByPage(colltResRecordVO);
            logger.debug("当前查询本人所属数据信息的结果集数量为:"+ colltResRecords.size());
            pageSet(colltResRecords, colltResRecordVO);
            list = (List<ColltResRecordVO>) beansCopy(colltResRecords, ColltResRecordVO.class);
        } catch (Exception e) {
            logger.error("数据转换出现异常!", e);
        }

        return list;
    }

    /**
     * 取消导入或者确认导入后删除临时信息<br>
     *
     * 0.1:wanglihua:2019/9/10 8:59: TODO: <br>
     * @author wanglihua
     * @params  * @param null
     * @return
     * @since 2019/9/10 8:59
     * @date 2019/9/10 8:59
     * @version 0.1
     */
    @Override
    public int deleteAllTemp(List<String> recordSerno) {
        int num = 0;
        try{
            num = colltResRecordTempDao.deleteAllTemp(recordSerno);
        } catch (Exception e) {
            logger.error("删除数据发生异常!", e);
            num = -1;
        }
        logger.debug("根据条件:"+ recordSerno +"删除的数据条数为"+ num);
        return num;
    }

    /**
     * 在临时表查找需要导入正式表的信息
     *
     * 0.1:wanglihua:2019/9/10 9:01: TODO: <br>
     * @author wanglihua
     * @params  * @param null
     * @return
     * @since 2019/9/10 9:01
     * @date 2019/9/10 9:01
     * @version 0.1
     */
    @Override
    public List<ColltResRecordVO> queryByPKList(List<String> recordSerno) {
        logger.debug("当前查询本人所属数据信息的参数信息为:"+ recordSerno);
        List<ColltResRecordVO> list = null;
        try {
            List<ColltResRecord> tempColltResRecords = colltResRecordTempDao.queryByPKList(recordSerno);
            logger.debug("当前查询本人所属数据信息的结果集数量为:"+ tempColltResRecords.size());
            list = (List<ColltResRecordVO>) beansCopy(tempColltResRecords, ColltResRecordVO.class);
        } catch (Exception e) {
            logger.error("数据转换出现异常!", e);
        }

        return list;
    }

    /**
     * 将解析的excel数据存入临时表
     *
     * 0.1:wanglihua:2019/9/10 8:57: TODO: <br>
     * @author wanglihua
     * @params  * @param null
     * @return
     * @since 2019/9/10 8:57
     * @date 2019/9/10 8:57
     * @version 0.1
     */
    @Override
    public int batchInsertIntoTemp(List<ColltResRecordVO> vo) {
        logger.debug("当前修改数据为:"+ vo.toString());
        int num = 0;
        try {
            num = colltResRecordTempDao.batchInsertIntoTemp(vo);
        } catch (Exception e) {
            logger.error("修改数据发生异常!", e);
            num = -1;
        }
        logger.debug("根据条件:"+ vo +"修改的数据条数为"+ num);
        return num;
    }
}
